package org.example.hypersonaltools.tool;

import javafx.animation.Interpolator;

public class CustomSplineInterpolator extends Interpolator {


    @Override
    protected double curve(double t) {
        // 使用三次贝塞尔曲线来实现中间慢两头快的效果
        // 这里使用了简单的参数来定义曲线，你可以根据需要调整这些参数
        // 确保曲线的起点和终点分别是0.1和1
        double a = 0.1; // 开始速度
        double b = 1;   // 中间速度
        double c = 0.1; // 结束速度

        // 三次贝塞尔曲线公式
        // t 是 [0, 1] 之间的值
        // p0, p1, p2, p3 是曲线的控制点
        // 这里简单地设置了一个中间慢两头快的曲线
        double p0 = 0;
        double p1 = 0.4; // 控制点1
        double p2 = 0.6; // 控制点2
        double p3 = 1;

        // 三次贝塞尔曲线公式：B(t) = (1-t)^3 * p0 + 3*(1-t)^2 * t * p1 + 3*(1-t) * t^2 * p2 + t^3 * p3
        double curveValue = Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;

        // 使用曲线值来调整速度
        return a + (b - a) * curveValue + (c - b) * (1 - curveValue);
    }

}
